When a drop causes the event controller to be finalized
(directly or indirectly), we end up segfaulting while
trying to wrap up the drag operation. So, keep a reference
on the GtkDragSource from when the drag begins to when
it is done.
This fixes a crash in gnome-todo when dragging tasks.
gdk_drag_drop_done (source->drag, success);
g_clear_object (&source->drag);
+ g_object_unref (source);
}
static void
gtk_drag_source_ensure_icon (source, source->drag);
+ /* Keep the source alive until the drag is done */
+ g_object_ref (source);
+
g_signal_connect (source->drag, "dnd-finished",
G_CALLBACK (gtk_drag_source_dnd_finished_cb), source);
g_signal_connect (source->drag, "cancel",